home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
8bitfiles.net/archives
/
archives.tar
/
archives
/
commodore-users-of-norman
/
CUON_121_(06-1985).d64
/
minimuf 2.o
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2019-04-13
|
4KB
|
147 lines
10 PRINT"[147]MINI M.U.F.":PRINT"COMPUTE THE MAXIMUM":PRINT"USABLE FREQUENCY"
20 PRINT"BETWEEN ANY TWO":PRINT"HAM RADIO STATIONS":PRINT"XTMR=TRANSMITTER"
30 PRINT"RCVR=RECEIVER"
40 PRINT" HIT ANY KEY TO GO ON":POKE198,0
50 GETA$:IFA$=""THEN50
90 REM - FNACS() IS THE INVERSE (ARC) COSINE FUNCTION
95 DEF FNACS(X)=-ATN(X/SQR(-X*X+1))+(null)/2
99 :
100 REM - FNS() AIDS IN ALIGNING COLUMNS OF NUMBERS
105 DEF FNS(X)=3-INT(LOG(X)/LOG(10))
110 DIM M$(37),A$(4),M(12)
120 DATA 31,28,31,30,31,30,31,31,30,31,30,31
130 FOR I=1 TO 12: READ M(I): NEXT I
140 M$="JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC"
150 R0=(null)/180
155 P1=2*(null)
160 R1=180/(null)
170 P0=(null)/2
180 PRINT"[147] MINI M.U.F. "
190 PRINT"XMTR (LAT,LON)";
200 INPUT L1,W1
210 IF L1=>-90 AND L1=<90 THEN 240
220 PRINT"INVALID LATITUDE:":PRINT" USE -90 TO 90"
230 GOTO 190
240 IF W1=>-360 AND W1=<360 THEN 270
250 PRINT"INVALID LONGITUDE:":PRINT" USE -360 TO 360"
260 GOTO 190
270 PRINT"RCVR (LAT,LON)";
280 INPUT L2,W2
290 IF L2=>-90 AND L2=<90 THEN 320
300 PRINT"INVALID LATITUDE:":PRINT" USE -90 TO 90"
310 GOTO 270
320 IF W2=>-360 AND W2=<360 THEN 350
330 PRINT"INVALID LONGITUDE:":PRINT" USE -360 TO 360"
340 GOTO 270
350 PRINT"DATE (DAY,#MO.)";
360 INPUT D6,M0
370 IF M0=>1 AND M0=<12 THEN 400
380 PRINT"INVALID MONTH:":PRINT" MUST BE 1 TO 12"
390 GOTO 350
400 IF D6=>1 AND D6=<M(M0) THEN 430
410 PRINT"INVALID DAY:":PRINT" MUST BE 1 TO"M(M0)""
420 GOTO 350
430 PRINT"SUNSPOT NUMBER";
440 INPUT S9
450 IF S9>0 THEN 480
460 PRINT"INVALID SUNSPOT NO.:":PRINT"MUST BE NON-NEGATIVE."
470 GOTO 430
480 PRINT"[147] MINI M.U.F. "
490 A$=MID$(M$,3*M0-2,3)
500 PRINT"DATE: "D6;A$
510 PRINT"LOCATION LAT LONG"
520 PRINT"XMTR: "L1;TAB(16);W1
530 PRINT"RCVR: "L2;TAB(16);W2
540 PRINT"SUNSPOT NUMBER:"S9
550 PRINT" HIT ANY KEY TO GO ON ";: POKE 198,0
560 GET A$: IF A$="" THEN 560
570 PRINT"[147] MINI M.U.F. "
580 PRINT" HR"TAB(6)"MUF"TAB(12)"HR"TAB(17)"MUF"
600 L1=L1*R0
610 W1=W1*R0
620 L2=L2*R0
630 W2=W2*R0
640 FOR IT5=0 TO 11
650 T5=IT5: GOSUB 1000
660 PRINT T5;TAB(2+FNS(J9));INT(10*J9+.5)/10;
670 T5=IT5+12: GOSUB 1000
675 PRINT TAB(11);T5;TAB(13+FNS(J9));INT(10*J9+.5)/10
680 NEXT IT5
685 PRINT" TIME=UTC -- FREQ=MHZ"
690 PRINT"HIT ANY KEY TO DO MORE";: POKE 198,0
700 GET A$: IF A$="" THEN 700
710 GOTO 180
1000 REM - MINIMUF 3.5
1010 K7=SIN(L1)*SIN(L2)+COS(L1)*COS(L2)*COS(W2-W1)
1020 IF K7<=-1 THEN K7=-.99999999
1050 IF K7=>1 THEN K7=.99999999
1070 G1=FNACS(K7)
1080 K6=1.59*G1
1090 IF K6<1 THEN K6=1
1110 K5=1/K6
1120 J9=100
1130 FOR K1=1/2*K6 TO 1-1/2*K6 STEP .9999-1/K6
1140 IF K5<>1 THEN K5=.5
1160 P=SIN(L2)
1170 Q=COS(L2)
1180 A=(SIN(L1)-P*COS(G1))/(Q*SIN(G1))
1190 B=G1*K1
1200 C=P*COS(B)+Q*SIN(B)*A
1210 D=(COS(B)-C*P)/(Q*SQR(1-C^2))
1220 IF D<=-1 THEN D=-.99999999
1250 IF D=>1 THEN D=.99999999
1270 D=FNACS(D)
1280 W0=W2+SGN(SIN(W1-W2))*D
1290 IF W0<0 THEN W0=W0+P1
1310 IF W0>P1 THEN W0=W0-P1
1330 IF C<-1 THEN C=-.99999999
1350 IF C>1 THEN C=.99999999
1380 L0=P0-FNACS(C)
1390 Y1=.0172*(10+(M0-1)*30.4+D6)
1400 Y2=.409*COS(Y1)
1410 K8=3.82*W0+12+.13*(SIN(Y1)+1.2*SIN(2*Y1))
1420 K8=K8-12*(1+SGN(K8-24))*SGN(ABS(K8-24))
1430 IF COS(L0+Y2)>-.26 THEN 1520
1440 K9=0
1450 G0=0
1460 M9=2.5*G1*K5
1470 IF M9>P0 THEN M9=P0
1490 M9=SIN(M9)
1500 M9=1+2.5*M9*SQR(M9)
1510 GOTO 1770
1520 K9=(-.26+SIN(Y2)*SIN(L0))/(COS(Y2)*COS(L0)+1E-3)
1530 K9=12-ATN(K9/SQR(ABS(1-K9*K9)))*7.639437
1540 T=K8-K9/2+12*(1-SGN(K8-K9/2))*SGN(ABS(K8-K9/2))
1550 T4=K8+K9/2-12*(1+SGN(K8-K9/2-24))*SGN(ABS(K8+K9/2-24))
1560 C0=ABS(COS(L0+Y2))
1570 T9=9.7*C0^9.6
1580 IF T9=<.1 THEN T9=.1
1600 M9=2.5*G1*K5
1610 IF M9>P0 THEN M9=P0
1630 M9=SIN(M9)
1640 M9=1+2.5*M9*SQR(M9)
1650 IF T4<T THEN 1680
1660 IF (T5-T)*(T4-T5)>0 THEN 1690
1670 GOTO 1820
1680 IF (T5-T4)*(T-T5)>0 THEN 1820
1690 T6=T5+12*(1+SGN(T-T5))*SGN(ABS(T-T5))
1700 G9=(null)*(T6-T)/K9
1710 G8=(null)*T9/K9
1720 U=(T-T6)/T9
1730 G0=C0*(SIN(G9)+G8*(EXP(U)-COS(G9)))/(1+G8*G8)
1750 IF G0<G7 THEN G0=G7
1770 G2=(1+S9/250)*M9*SQR(6+58*SQR(G0))
1780 G2=G2*(1-.1*EXP((K9-24)/3))
1790 G2=G2*(1+(1-SGN(L1)*SGN(L2))*.1)
1800 G2=G2*(1-.1*(1+SGN(ABS(SIN(L0))-COS(L0))))
1810 GOTO 1880
1820 T6=T5+12*(1+SGN(T4-T5))*SGN(ABS(T4-T5))
1830 G8=(null)*T9/K9
1840 U=(T4-T6)/2
1850 U1=-K9/T9
1860 G0=C0*(G8*(EXP(U1)+1))*EXP(U)/(1+G8*G8)
1870 GOTO 1770
1880 IF G2=<J9 THEN J9=G2
1900 NEXT K1
1910 RETURN